/*
 *	               _ooOoo_ 
 *	              o8888888o 
 *	              88" . "88 
 *	              (| -_- |) 
 *	              O\  =  /O 
 *	           ____/`---'\____ 
 *	         .'  \\|     |//  `. 
 *	        /  \\|||  :  |||//  \ 
 *	       /  _||||| -:- |||||-  \ 
 *	       |   | \\\  -  /// |   | 
 * 	       | \_|  ''\---/''  |   | 
 * 	       \  .-\__  `-`  ___/-. / 
 * 	    ___ `. .'  /--.--\  `. . __ 
 *	  ."" '<  `.___\_<|>_/___.'  >'"". 
 *	 | | :  `- \`.;`\ _ /`;.`/ - ` : | | 
 *	 \  \ `-.   \_ __\ /__ _/   .-` /  / 
 *======`-.____`-.___\_____/___.-`____.-'====== 
 *                   `=---=' 
 *^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 
 *佛祖保佑       永无BUG 
 * File name:        SinaUrlUtil.java
 * Copyright@blog.ilvelh.com(China)
 * Editor:           JDK1.7_40
 */
package com.ilvelh.tools;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.WebResource;

/**
 * 获取新浪的短连接这里用得http工具是JERSEY,可以根据自己使用的http工具修改
 * 
 * <p>
 * Author ilvelh
 * <p>
 * Date:2014-3-11 Time:下午3:48:33
 * <p>
 */
public class SinaUrlUtil {
	/**
	 * 调用sinaapi 长连接转短连接,或短连接转长连接
	 * 
	 * @param yourUrl
	 *            传入的url参数
	 *            <p>
	 *            如果传入的url是http://t.cn开头的话则默认是转成长连接
	 *            <p>
	 *            如果不是http://t. cn开头的话则是转成短连接
	 * @return 转换后的url地址，注意可能返回null
	 */
	public static String getUrl(String yourUrl) {
		if (yourUrl == null || "".equals(yourUrl.trim())) {
			return null;
		}
		String url = "http://api.weibo.com/2/short_url/shorten.json?source=1681459862&url_long="
				+ yourUrl;
		if (yourUrl.startsWith("http://t.cn")) {
			url = "http://api.weibo.com/2/short_url/expand.json?source=1681459862&url_short="
					+ yourUrl;
		}
		Client client = Client.create();
		WebResource wb = client.resource(url.toString());
		try {
			String ret = wb.get(String.class);
			JSONObject rjson = JSONObject.parseObject(ret);
			JSONArray array = rjson.getJSONArray("urls");
			if (array == null || 0 == array.size()) {
				System.out.println("获取短连接失败,返回数据长度不正确");
				return null;
			}
			JSONObject json = array.getJSONObject(0);
			if (!json.getBooleanValue("result")) {
				System.out.println("获取短连接失败,新浪服务器返回数据异常");
				return null;
			}
			if (yourUrl.startsWith("http://t.cn")) {
				return json.getString("url_long");
			} else {
				return json.getString("url_short");
			}
		} catch (Exception e) {
			System.out.println("获取短连接失败," + e.getMessage());
		}
		return null;
	}
}
